package com.css.dzj.zfjg.modules.cohostrelate.service.impl;


import com.css.dzj.zfjg.common.util.ServiceUtil;

import com.css.dzj.zfjg.modules.cohostrelate.entity.JgLhjgRwxbglbEntity;
import com.css.dzj.zfjg.modules.cohostrelate.entity.QJgLhjgRwxbglbEntity;
import com.css.dzj.zfjg.modules.cohostrelate.mapper.RwxbglbMapper;
import com.css.dzj.zfjg.modules.cohostrelate.service.JgLhjgRwxbglbService;
import com.querydsl.core.QueryResults;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional;
import java.util.List;

/**
 * 协办关系serviceImpl
 */
@Service
public class JgLhjgRwxbglbServiceImpl implements JgLhjgRwxbglbService {

    @Autowired
    private RwxbglbMapper rwxbglbMapper;

    @Autowired
    private JPAQueryFactory jpaQueryFactory;

    @Autowired
    private ServiceUtil serviceUtil;


    /**
     * 添加协办关系
     * @param jgLhjgRwxbglbEntity
     */
    @Transactional
    @Override
    public void add(JgLhjgRwxbglbEntity jgLhjgRwxbglbEntity,HttpServletRequest request) {
        try {
            rwxbglbMapper.save(jgLhjgRwxbglbEntity);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 修改协办关系
     * @param jgLhjgRwxbglbEntity
     */
    @Transactional
    @Override
    public void update(JgLhjgRwxbglbEntity jgLhjgRwxbglbEntity) {
        if (jgLhjgRwxbglbEntity == null){
            throw new RuntimeException("实体为空");
        }
        // 实体中必须有ID
        rwxbglbMapper.save(jgLhjgRwxbglbEntity);
    }

    /**
     * 通过id查找协办关系
     * @param id
     * @return
     */
    @Override
    public JgLhjgRwxbglbEntity findById(String id) {
        return rwxbglbMapper.findById(id).get();
    }


    /**
     * 分页查询所有协办关系
     * @return
     */
    @Override
    public QueryResults<JgLhjgRwxbglbEntity> queryPage(Pageable pageable) {
        QJgLhjgRwxbglbEntity qJgLhjgRwxbglbEntity = QJgLhjgRwxbglbEntity.jgLhjgRwxbglbEntity;
        QueryResults<JgLhjgRwxbglbEntity> rwxbglbQueryResults = jpaQueryFactory.selectFrom(qJgLhjgRwxbglbEntity)
                .offset(pageable.getOffset())
                .limit(pageable.getPageSize())
                .fetchResults();
        return rwxbglbQueryResults;
    }
    /**
     * 分页查询所有协办关系
     * @return
     */
    @Override
    public JgLhjgRwxbglbEntity getbyTaskno(String taskNo) {
        QJgLhjgRwxbglbEntity q = QJgLhjgRwxbglbEntity.jgLhjgRwxbglbEntity;
        return jpaQueryFactory.selectFrom(q).where(q.taskNo.eq(taskNo)).fetchOne();
    }

    /**
     * 物理删除协办关系
     * @param jgLhjgRwxbglbEntity
     */
    @Override
    public void delete(JgLhjgRwxbglbEntity jgLhjgRwxbglbEntity) {
        try {
            rwxbglbMapper.delete(jgLhjgRwxbglbEntity);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public List<JgLhjgRwxbglbEntity> getListbyTaskno(String taskNo) {
        QJgLhjgRwxbglbEntity q = QJgLhjgRwxbglbEntity.jgLhjgRwxbglbEntity;
        return jpaQueryFactory.selectFrom(q).where(q.taskNo.eq(taskNo)).fetch();
    }

    @Override
    public void deleteByTaskNo(String taskNo) {
        List<JgLhjgRwxbglbEntity> listbyTaskno = getListbyTaskno(taskNo);
        for (JgLhjgRwxbglbEntity jgLhjgRwxbglbEntity:listbyTaskno) {
            delete(jgLhjgRwxbglbEntity);
        }
    }
    /**
     * 根据taskNo获取协办部门个数
     * @param taskNo
     * @return
     */
    @Override
    public String getXbCountByTaskNo(String taskNo) {
        return rwxbglbMapper.getXbCountByTaskNo(taskNo);
    }

}
